/*
 *
 *  * sufly0001@gmail.com Modify the code to enhance the ease of use.
 *  *
 *  * Copyright (C) 2015 Ted xiong-wei@hotmail.com
 *  * Licensed under the Apache License, Version 2.0 (the "License");
 *  * you may not use this file except in compliance with the License.
 *  * You may obtain a copy of the License at
 *  *
 *  *      http://www.apache.org/licenses/LICENSE-2.0
 *  *
 *  * Unless required by applicable law or agreed to in writing, software
 *  * distributed under the License is distributed on an "AS IS" BASIS,
 *  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 *  * See the License for the specific language governing permissions and
 *  * limitations under the License.
 *
 *
 */

package com.mogist.hqc.view;

import android.content.Context;
import android.util.AttributeSet;
import android.view.MotionEvent;
import android.view.ViewParent;
import android.widget.ScrollView;

public class ContentScrollView extends ScrollView
{

	public interface OnScrollChangedListener
	{
		void onScrollChanged(int l, int t, int oldl, int oldt);
	}

	private OnScrollChangedListener listener;

	public ContentScrollView(Context context)
	{
		super(context);
	}

	public ContentScrollView(Context context, AttributeSet attrs)
	{
		super(context, attrs);
	}

	public ContentScrollView(Context context, AttributeSet attrs, int defStyle)
	{
		super(context, attrs, defStyle);
	}

	public void setOnScrollChangeListener(OnScrollChangedListener listener)
	{
		this.listener = listener;
	}

	@Override protected void onScrollChanged(int l, int t, int oldl, int oldt)
	{
		super.onScrollChanged(l, t, oldl, oldt);
		listener.onScrollChanged(l, t, oldl, oldt);
	}

	@Override protected void onAttachedToWindow()
	{
		super.onAttachedToWindow();
		ViewParent parent = this.getParent();
		while(parent != null)
		{
			if(parent instanceof ScrollLayout)
			{
				((ScrollLayout) parent).setAssociatedScrollView(this);
				break;
			}
			parent = parent.getParent();
		}
	}

	@Override public boolean onTouchEvent(MotionEvent ev)
	{
		ViewParent parent = this.getParent();
		if(parent instanceof ScrollLayout)
		{
			if(((ScrollLayout) parent).getCurrentStatus() == ScrollLayout.Status.OPENED)
			{
				return false;
			}
		}
		return super.onTouchEvent(ev);
	}
}
